﻿using IQReportes_Batch.Logica;
using IQReportes_Batch.WebService.DTO;
using IQReportes_Batch.WebService.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IQReportes_Batch.WebService
{
    
    public class ConsumeRestService
    {
        LogicaParametro logicaParametro = new LogicaParametro();
        FuncionesGenericas funcGen = new FuncionesGenericas();
        public ConsumeRestService() { }
        public string getUrlDirs()
        {
            //return "http://localhost:8557/Service1.svc/getDIRS/";
            return MetodosEstaticos.getUrlWSDIR();
        }
        public string getUrlMotivos()
        {
            //return "http://localhost:8557/Service1.svc/getMotivos/";
            return MetodosEstaticos.getUrlWSMotivo();
        }
        public string getUrlRepresentantes()
        {
            //return "http://localhost:8557/Service1.svc/getRepresentates/";
            return MetodosEstaticos.getUrlWSRepresentantes();
        }
        public string getUrlCurrency()
        {
            return MetodosEstaticos.getUrlCurrency();
        }
        public Double getCurrency(DateTime dateCurrencyParam)
        {
            double errorResponse = -1.0;
            try
            {
                var stringDate = String.Format("{0:yyyy-MM-dd}", dateCurrencyParam);
                ConsumeRestGeneric<Currency> client = new ConsumeRestGeneric<Currency>();
                var url = string.Format(getUrlCurrency(),stringDate);
                var response = client.consume(url);
                return response.rates.PEN;
                
            }
            catch(Exception e){
                return errorResponse;
            }
        }

        public List<DIRModelService> getDirs(){
            try
            {
                ConsumeRestGeneric<ListGeneric<DIRModelService>> cliente = new ConsumeRestGeneric<ListGeneric<DIRModelService>>();
                //hize test con esta fecha "2013-11-13"
                var url = getUrlDirs() + funcGen.convertirStringToFecha(logicaParametro.getFechaWSDir(), "dd-MM-yyyy HH-mm").ToString("yyyy-MM-dd");
                //DateTime fechaInvocacion = DateTime.Now;
                var respuesta = cliente.consume(url);
                List<DIRModelService> lista =null;
                if (respuesta != null)
                {
                    lista = respuesta.lista;
                }
                //logicaParametro.actualizarFechaWSDir(fechaInvocacion);
                return lista;
            }
            catch (Exception e)
            {
                return null;
            }
        }
        public List<MotivoModelService> getMotivos()
        {
            try{
                ConsumeRestGeneric<ListGeneric<MotivoModelService>> cliente = new ConsumeRestGeneric<ListGeneric<MotivoModelService>>();
                var url = getUrlMotivos()+ logicaParametro.getFechaWSMotivo();

                DateTime fechaInvocacion = DateTime.Now;
                var respuesta = cliente.consume(url);
                List<MotivoModelService> lista = null;
                if (respuesta != null)
                {
                    lista = respuesta.lista;
                }
                logicaParametro.actualizarFechaWSDir(fechaInvocacion);
                return lista;

            }
            catch (Exception e)
            {
                return null;
            }
        }
        public List<RepresentanteModelService> getRepresentantes()
        {
            try{
                ConsumeRestGeneric<ListGeneric<RepresentanteModelService>> cliente = new ConsumeRestGeneric<ListGeneric<RepresentanteModelService>>();
                var url = getUrlRepresentantes() + funcGen.convertirStringToFecha(logicaParametro.getFechaWSRepresentantes(),"dd-MM-yyyy HH-mm").ToString("yyyy-MM-dd");
                DateTime fechaInvocacion = DateTime.Now;
                var respuesta = cliente.consume(url);
                List<RepresentanteModelService> lista = null;
                if (respuesta != null)
                {
                    lista = respuesta.lista;
                }
                logicaParametro.actualizarFechaWSRepresentantes(fechaInvocacion);
                return lista;
            }
            catch (Exception e)
            {
                return null;
            }
        }
    }
}
